#ifndef __LIGHT_H__
#define __LIGHT_H__

#include <iostream>
#include <vector>

#include "glm/glm.hpp"

class Light
{
protected:
	char name[0x40];
public:
	glm::vec3 position;
	glm::vec4 ambient;
	glm::vec4 diffuse;
	glm::vec4 specular; 
	int lightId;		
	char *GetName() { return name; }
	Light(glm::vec3 *p, glm::vec4 *a, glm::vec4 *d, glm::vec4 *s, char *n);
	virtual ~Light();
};

class LightMgr
{
protected:
	std::vector<Light *> lightArray;
	glm::vec4 ambientGlobalLight;
public:
	LightMgr();
	virtual ~LightMgr();

	virtual Light *AddLight(glm::vec3 *position, glm::vec4 *ambient, glm::vec4 *diffuse, glm::vec4 *specular, char *name = 0);

	virtual void Enable(Light *light) = 0;
	virtual void Enable(char *name) = 0;

	virtual void Disable(Light *light) = 0;
	virtual void Disable(char *name) = 0;

	virtual void AddGlobalAmbientLight(glm::vec4 *ambient);
	virtual void GlobaleAmbientLight(bool on) = 0;
};

#endif //__LIGHT_H__
